/*
Continuous Testing Toolkit
Copyright (C) 2009 Paul R. Holser, Jr.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/

package org.infinitest.toolkit.filter;

import java.util.List;
import java.util.Properties;

import static com.google.common.collect.Lists.*;
import static org.apache.commons.lang.StringUtils.*;
import static org.infinitest.toolkit.filter.FilteringRunnerHelper.*;

/**
 * A set of commonly used categories of test.
 */
public enum TestType {
    ALL,
    UNIT,
    INTEGRATION,
    CONTAINER,
    LOAD,
    PERFORMANCE,
    SLOW;

    static List<String> testTypesFrom(Properties properties) {
        String testType = properties.getProperty(TEST_TYPE_PROPERTY_KEY);
        if (isBlank(testType))
            testType = ALL.name();
        return parseTypes(testType);
    }

    private static List<String> parseTypes(String testTypeProperty) {
        List<String> typesToMatch = newArrayList();
        for (String each : testTypeProperty.toUpperCase().split("[, ]"))
            typesToMatch.add(each.trim());
        return typesToMatch;
    }
}
